package com.zlc.platform.service;

import com.zlc.common.core.dept.model.vo.MayanPlatDeptVo;
import com.zlc.common.core.position.model.vo.MayanPlatDeptPositionVo;
import com.zlc.common.core.position.model.vo.MayanPlatPositionUserVo;
import com.zlc.common.core.position.model.vo.MayanPlatPositionVo;
import com.zlc.common.core.user.model.vo.MayanPlatUserVo;
import com.zlc.common.model.dept.DeptVo;
import com.zlc.common.model.position.PositionUserVo;
import com.zlc.common.model.user.UserInfo;

import java.util.List;

public interface DeptService {

    /**
     * 新增部门
     */
    void addDept(MayanPlatDeptVo deptVo);


    /**
     * 修改部门信息
     */
    void updateDept(MayanPlatDeptVo deptVo);


    /**
     * 查询单个部门信息
     */
    MayanPlatDeptVo queryOne(String deptId);


    /**
     * 查询所有组织树
     */
    DeptVo queryDeptVo();


    /**
     * 添加部门岗位
     */
    void addDeptPosition(MayanPlatDeptPositionVo deptPositionVo);


    /**
     * 移除部门关联岗位
     */
    void removeDeptPosition(String relateId);


    /**
     * 通过部门编码查询关联的部门岗位
     */
    List<MayanPlatPositionVo> queryDeptPositions(String deptCode);


    /**
     * 添加岗位员工
     */
    void addDeptPositionUser(MayanPlatPositionUserVo positionUserVo);


    /**
     * 移除岗位关联员工
     */
    void removeDeptPositionUser(String relateId);


    /**
     * 查询部门岗位下员工
     */
    List<MayanPlatUserVo> queryPositionUsers(String deptCode, String positionCode);

    /**
     * 查询部门下员工,通过部门下所有岗位查询
     */
    List<MayanPlatUserVo> queryDeptUsers(String deptCode);


    /**
     * 通过账号获取岗位信息
     */
    List<PositionUserVo> getPositionByAccount(String account);


    /**
     * 获取登录用户关联信息
     */
    void loadUserInfo(UserInfo userInfo);
}
